package day12.homework.project2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Properties;

public class test {
    /**题目：
     * (1) 写一个 Properties 格式的配置文件，配置类的完整名称。
     * (2) 写一个程序，读取这个 Properties 配置文件，获得类的完整名称并加载这个类,用
     反射 的方式运行 run 方法
     */
    public static void main(String[] args) throws Exception {
        File f = new File("src\\main\\resources\\pro.properties");
        if (!f.exists()){
            f.createNewFile();
        }
        FileInputStream fis = new FileInputStream(f);

        Properties pp = new Properties();

        pp.load(fis);
        String str = pp.getProperty("className");
        Class clazz = Class.forName(str);
        Field c = clazz.getDeclaredField("count");
        Object obj = clazz.newInstance();
        c.setAccessible(true);
        int count = Integer.valueOf(pp.getProperty("count"));
        if (count >= 3) {
            System.out.println("输入的次数大于3, 退出");
            System.exit(0);
        }
        c.set(obj, count);
        Method me = clazz.getMethod("run", null);
        pp.setProperty("count", String.valueOf(count + 1));
        OutputStream out = new FileOutputStream(f);
        pp.store(out, "Update" + pp.getProperty("count") + "name");
        me.invoke(obj, null);

    }
}
